
#include <iostream>

using namespace std;

class A {
public:
	void func(){
		cout << "A::func()" << endl;
	}
};

// The first compile
template <class T> void foo() {
	// abc = 10; 	err	all the sign must be defined
	A a;
	// a.abc();	err
	a.func( );

	T t;
//	t.abc();	// Unknow's class assume it is reasonable.
	t.func( );
}

int main(){
	// The second compile
	foo<A>( );

	return 0;
}
